// 打包多页应用 - 1
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin') // 每次打包都删除 dist文件夹
const CopyWebpackPlugin = require('copy-webpack-plugin')
const Webpack = require('webpack')
// 1) cleanWebpackPlugin // 每次打包都删除 dist文件夹
// 2) copyWebpackPlugin // 
// 3) bannerPlugin // 内置
module.exports = {
    mode: 'production', // 模式 默认两种 production(生产模式) development(开发模式)
    // 1)源码映射 会单独生成一个sourcemap文件 出错了 会标识 当前报错的列和行
    // devtool: 'source-map', // 增加映射文件 可以帮我们调试源代码
    // 2)不会产生单独的文件 但是可以显示行和列
    // devtool: 'eval-source-map', //
    // 3)不会产生列 但是是一个单独的映射文件 
    // devtool: 'cheap-module-source-map', // 产生后你可以保留起来
    // 4)不会产生文件 集成在打包后的文件中 不会产生列
    devtool: 'cheap-module-source-map',
    // 多入口
    entry: {
        home: './src/index.js'
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname,'dist')
    },
    // watch: true, // 监听打包
    // watchOptions:{ // 监控的选项
    //     poll: 1000,  // 每秒问我 1000次
    //     aggregateTimeout: 500, // 防抖 我一直输入代码
    //     ignored: /node_modules/ // 不需要进行监听的那个文件
    // },
    module: {
        rules: [
            {
                test: /\.js$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './index.html',
            filename: 'index.html'
        }),
        new CleanWebpackPlugin(), // 每次打包都将dist文件删除
        new CopyWebpackPlugin([ // 拷贝 将from的文件拷贝到dist的to下
            {from: './doc', to: './doc'}
        ]),
        new Webpack.BannerPlugin('make 2019 by LFZJ') // 版权所属
    ]
}